// Управление боковым меню и SPA-функционалом
document.addEventListener('DOMContentLoaded', () => {
    const menuToggle = document.querySelector('.menu-toggle'); // Кнопка "бургер"
    const sidebar = document.querySelector('.sidebar'); // Боковая панель
    const content = document.querySelector('.content'); // Основное содержимое
    const contentArea = document.querySelector('.page-content'); // Область для динамического контента

    // Логирование для отладки
    console.log('Menu toggle:', menuToggle);
    console.log('Sidebar:', sidebar);
    console.log('Content:', content);

    // Проверка существования элементов
    if (menuToggle && sidebar) {
        // Открытие/закрытие меню при клике на кнопку
        menuToggle.addEventListener('click', (e) => {
            e.stopPropagation();
            console.log('Button clicked!');
            sidebar.classList.toggle('active');
        });

        // Закрытие меню при клике вне его области
        if (content) {
            content.addEventListener('click', () => {
                if (sidebar.classList.contains('active')) {
                    console.log('Content clicked, closing sidebar!');
                    sidebar.classList.remove('active');
                }
            });
        }

        // Закрытие меню при клике на ссылку в навигации
        const navLinks = document.querySelectorAll('.sidebar-nav a');
        navLinks.forEach(link => {
            link.addEventListener('click', (e) => {
                e.stopPropagation();
            });
        });
    } else {
        console.error('Menu toggle or sidebar not found!');
    }

    // Функция для обновления активной ссылки
    function updateActiveLink() {
        const currentPath = window.location.pathname;
        const navLinks = document.querySelectorAll('.sidebar-nav a.nav-link');

        navLinks.forEach(link => {
            link.parentElement.classList.remove('active');
            const linkPath = new URL(link.href).pathname;
            const normalizedCurrentPath = currentPath.endsWith('/') ? currentPath : currentPath + '/';
            const normalizedLinkPath = linkPath.endsWith('/') ? linkPath : linkPath + '/';
            if (normalizedCurrentPath === normalizedLinkPath) {
                link.parentElement.classList.add('active');
            }
        });
    }

    // SPA-функционал: динамическая загрузка контента
    updateActiveLink();

    navLinks.forEach(link => {
        link.addEventListener('click', async (e) => {
            e.preventDefault();
            const url = link.getAttribute('href');

            try {
                const response = await fetch(url, { method: 'GET' });
                if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`);
                const html = await response.text();
                const parser = new DOMParser();
                const doc = parser.parseFromString(html, 'text/html');
                const newContent = doc.querySelector('.page-content').innerHTML;
                contentArea.innerHTML = newContent;
                window.history.pushState({}, document.title, url);
                updateActiveLink();

                if (window.innerWidth <= 768) {
                    sidebar.classList.remove('active');
                }
            } catch (error) {
                console.error('Ошибка загрузки:', error);
                contentArea.innerHTML = '<p>Ошибка загрузки страницы</p>';
            }
        });
    });

    // Обработка кнопки "Назад" браузера
    window.addEventListener('popstate', async () => {
        try {
            const response = await fetch(window.location.pathname, { method: 'GET' });
            const html = await response.text();
            const parser = new DOMParser();
            const doc = parser.parseFromString(html, 'text/html');
            contentArea.innerHTML = doc.querySelector('.page-content').innerHTML;
            updateActiveLink();
        } catch (error) {
            console.error('Ошибка загрузки:', error);
            contentArea.innerHTML = '<p>Ошибка загрузки страницы</p>';
        }
    });
});